//package com.demo.sentinel.init;
//
//import com.alibaba.csp.sentinel.cluster.flow.rule.ClusterFlowRuleManager;
//import com.alibaba.csp.sentinel.cluster.flow.rule.ClusterParamFlowRuleManager;
//import com.alibaba.csp.sentinel.cluster.server.config.ClusterServerConfigManager;
//import com.alibaba.csp.sentinel.cluster.server.config.ServerTransportConfig;
//import com.alibaba.csp.sentinel.datasource.ReadableDataSource;
//import com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource;
//import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
//import com.alibaba.csp.sentinel.slots.block.flow.param.ParamFlowRule;
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.TypeReference;
//import com.demo.sentinel.constants.Constants;
//
//import java.util.List;
//import java.util.Properties;
//import java.util.Set;
//
///**
// * @author cyj
// **/
//public class ServerConfigUtil {
//
//    public static void init(Properties properties) {
//        // Register cluster flow rule property supplier which creates data source by namespace.
//        ClusterFlowRuleManager.setPropertySupplier(namespace -> {
//            ReadableDataSource<String, List<FlowRule>> ds = new NacosDataSource<>(properties, Constants.GROUP_ID,
//                    namespace + Constants.FLOW_POSTFIX,
//                    source -> JSON.parseObject(source, new TypeReference<List<FlowRule>>() {}));
//            return ds.getProperty();
//        });
//        // Register cluster parameter flow rule property supplier.
//        ClusterParamFlowRuleManager.setPropertySupplier(namespace -> {
//            ReadableDataSource<String, List<ParamFlowRule>> ds = new NacosDataSource<>(properties, Constants.GROUP_ID,
//                    namespace + Constants.PARAM_FLOW_POSTFIX,
//                    source -> JSON.parseObject(source, new TypeReference<List<ParamFlowRule>>() {}));
//            return ds.getProperty();
//        });
//
//        // 加载命名空间，命名空间存放是服务名集合
//        ReadableDataSource<String, Set<String>> namespaceDs = new NacosDataSource<>(properties, Constants.GROUP_ID,
//                Constants.NAMESPACE_SET_DATA_ID, source -> JSON.parseObject(source, new TypeReference<Set<String>>() {}));
//        ClusterServerConfigManager.registerNamespaceSetProperty(namespaceDs.getProperty());
//
//        // 设置服务端口
//        ClusterServerConfigManager.loadGlobalTransportConfig(new ServerTransportConfig()
//                .setIdleSeconds(600)
//                .setPort(11111));
//    }
//}
